const router = require("express").Router();
const md5 = require("md5");
const { async } = require("regenerator-runtime");
const svgCaptcha = require("svg-captcha");
const AdminModel = require("../../model/schema/adminModel");

router.get("/", (req, res) => {
    res.render("admin/login/login.html", {
        // 刚注册完未登录的时候 req.session.curRegisterUM 这个session存在，等到登录进去就去除掉这个session
        username: req.session.curRegisterUM ? req.session.curRegisterUM : "",
        errorInfo: req.session.errorInfo ? req.session.errorInfo : "",
    });
});

router.post("/doLogin", async(req, res) => {
    let verify = req.body.verify; // 用户输入的验证码
    let username = req.body.username;
    let password = req.body.password;

    // 用户名密码为空
    let UPFlag = username && password;
    if (!UPFlag) {
        req.session.errorInfo = "用户名或密码输入错误";
        // res.redirect(`/${req.app.locals.adminPath}/login`);
        // return;
    }

    // 判断验证码输入是否正确, 如果三者有一个没有输入信息都为false
    let verifyFlag =
        verify &&
        verify.toLocaleLowerCase() == req.session.verifyText.toLocaleLowerCase();

    if (!verifyFlag) {
        // 验证码错误
        req.session.errorInfo = "验证码输入错误";
        // res.redirect(`/${req.app.locals.adminPath}/login`);
        // return
    }

    if (!UPFlag || !verifyFlag) {
        // 两个flag如果有一个是false都相当于登录失败
        res.redirect(`/${req.app.locals.adminPath}/login`);
        return;
    }

    // 这个时候才去查找数据库看用户名和密码是否匹配
    const result = await AdminModel.findOne({
        username,
        password: md5(password),
    });

    if (!result) {
        req.session.errorInfo = "用户名或密码错误";
        res.redirect(`/${req.app.locals.adminPath}/login`);
        return;
    }

    // // 这个时候说明匹配成功，跳转到管理员后台首页
    // // 并且存储该管理员的 session 信息
    req.session.adminInfo = result;
    res.redirect(`/${req.app.locals.adminPath}`);
});

router.get("/loginOut", (req, res) => {
    req.session.adminInfo = null;
    res.redirect(`/${req.app.locals.adminPath}/login`);
});

router.get("/verify", (req, res) => {
    // 创建验证码对象
    var verifyObj = svgCaptcha.create();
    // 将验证码字符串存入 session 中，到时候进行一个匹配用户输入
    req.session.verifyText = verifyObj.text;
    res.type("svg"); // 设置响应回去的是MIME图像类型
    res.status(200).send(verifyObj.data); // 响应状态码；响应的数据
});

module.exports = router;